<?php

namespace App\Models\Product;

use App\Models\BaseModel;

class GoodsModel extends BaseModel
{
    /**
     * 与模型关联的数据表。
     *
     * @var string
     */
    protected $table = 'goods';

    /**
     * 可以被批量赋值的属性。
     *
     * @var array
     */
    protected $fillable = array(
        'name',
        'goods_code',
        'product_code',
        'product_name',
        'product_id',
        'goods_point',
        'settle_require',
        'main_pic',
        'goods_detail',
        'goods_remark',
        'down_str',
        'goods_str',
        'xh_status',
        'oblong_pic',
        'detail_top_pic',
        'detail_bg_color',
        'status',
        'shop_id',
        'shop_str',
        'created_by',
        'created_by_name',
        'created_at',
        'updated_by',
        'updated_at',
        'voice',
        'flow',
        'monthly',
        'is_app',
        'goods_price',
        'passing_money',
        'author_commission',
        'is_select_number',
        'sort',
        'is_app_all',
        'aperator',
        'is_service',
        'tishi',
        'is_trun',
        'is_top',
        'product_type',
        'product_operator',
        'in_name'
    );

    // public $timestamps = false; // 防止updated_at 报错

    public function aliasRable($alias)
    {
        return $this->setTable($alias);
    }

    protected function serializeDate(\DateTimeInterface $date)
    {
        return $date->format('Y-m-d H:i:s');
    }

    /**
     * 查询数据需要过滤掉的属性。
     *
     * @var array
     */

    protected $hidden = array(
        'updated_at'
    );

    //返回关键字段
    public function getTableField()
    {
        return $this->fillable;
    }

    /**
     * 建表语句
     */
    protected function buildTable($name = '')
    {
        $tablename = $this->table;
        if (!empty($name)) {
            $tablename = $name;
        }
        $table = "CREATE TABLE IF NOT EXISTS  $tablename (
        `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
        `name` bigint(20) DEFAULT NULL COMMENT '商品名称',
        `goods_code` varchar(100) DEFAULT NULL COMMENT '商品编码',
        `product_code` varchar(100) DEFAULT '0' COMMENT '产品编码',
        `product_name` varchar(30) DEFAULT '0' COMMENT '产品名称',
        `product_id` int(11) DEFAULT '0' COMMENT '产品id',
        `goods_point` varchar(255) DEFAULT '' COMMENT '商品',
        `settle_require` varchar(255) DEFAULT '' COMMENT '结算要求',
        `main_pic` varchar(100) DEFAULT null COMMENT '产品主图',
        `goods_detail` text DEFAULT null COMMENT '产品详情',
        `goods_remark` text DEFAULT null COMMENT '产品备注',
        `shop_str` varchar(255) DEFAULT '0' COMMENT '店铺字符串 使用逗号隔开',
        `created_by` int(11) DEFAULT '0' COMMENT '创建者',
        `created_by_name` varchar(64) DEFAULT '' COMMENT '创建者名称',
        `created_at` datetime DEFAULT NULL COMMENT '创建时间',
        `updated_by` varchar(64) DEFAULT '' COMMENT '更新者',
        `updated_at` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间',
        `remark` varchar(500) DEFAULT NULL COMMENT '备注',
        PRIMARY KEY (`id`)
        ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 COMMENT='商品表';";
        return $table;
    }

    /**
     * 插入新的字段
     */
    protected function bulidField()
    {
        //例子
        $array = [
            'shop_id' => "int(11) DEFAULT '0' COMMENT '店铺id'",
            'shop_name' => "varchar(100) DEFAULT '' COMMENT '店铺名称'",
            'goods_str' => "varchar(255) DEFAULT '0' COMMENT '商品字符串'",
            'down_str' => "varchar(255) DEFAULT '0' COMMENT '下游字符串'",
            'status' => "char(1) DEFAULT '0' COMMENT '是否上下架 1 下架 0 上架'",
            'shop_name_str' => "varchar(255) DEFAULT '0' COMMENT '供应商名称字符串'",
            'shop_id_str' => "varchar(255) DEFAULT '0' COMMENT '供应商id字符串'",
            'sup_goods_name' => "varchar(255) DEFAULT '0' COMMENT '上游商品名称'",
            'sup_goods_id' => "int(11) DEFAULT null COMMENT '上游商品id'",
            'sup_goods_id_str' => "varchar(255) DEFAULT '0' COMMENT '上游商品id字符串'",
            'sup_shop_id' => "int(11) DEFAULT null COMMENT '分销商id'",
            'sup_shop_name' => "varchar(255) DEFAULT '0' COMMENT '分销商名称'",
            'monthly' => "varchar(255) DEFAULT '0' COMMENT '月租'",
            'flow' => "varchar(255) DEFAULT '0' COMMENT '流量'",
            'voice' => "varchar(255) DEFAULT '0' COMMENT '语音'",
            'is_app' => "char(1) DEFAULT '1' COMMENT '是否上下架小程序 1 下架 0 上架'",
            'goods_price' => "double(11,2) DEFAULT '0.00' COMMENT '价格'",
            'is_select_number' => "char(1) DEFAULT '2' COMMENT '是否选号码 1 可选 2 不可选'",
            'sort' => "int(1) DEFAULT '0' COMMENT '排序'",
            'is_app_all' => "char(1) DEFAULT '1' COMMENT '是否上下架小程序 1下架 0 上架'",
            'aperator' => "varchar(255) DEFAULT null COMMENT '运营商'",
            'is_service' => "varchar(55) DEFAULT null COMMENT '服务费'",
            'tishi' => "varchar(255) DEFAULT null COMMENT '小程序提示'",
            'is_trun' => "char(1) DEFAULT 0 COMMENT '是否转单 0 不是转单 1 转单'",
            'is_top' => "char(1) DEFAULT 1 COMMENT '是否置顶 0 置顶 1 不置顶'",
            'product_type' => "varchar(100) DEFAULT 0 COMMENT '运营商类型 运营商 0 移动 1 电信 2 联通 3虚拟'",
            'product_operator' => "varchar(100) DEFAULT null COMMENT '自定义类型'",
        ];
        return $array;
    }

    // 关联 role表
    public function userToRole($role)
    {
        // return $this->hasMany(Role::className(),);
    }
}
